home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / games / px3 / etc / prb_swap.bas < prev   
BASIC Source File  |  1997-09-19  |  8KB  |  371 lines

  1. /*====-----------------------------------------====
  2. /*====  -: Picture Crosswords [ PX ] :-        ====
  3. /*====    モンダイ ファイル イチイレカエ プログラム            ====
  4. /*====                     Programmed by MSY.  ====
  5. /*====-----------------------------------------====
  6. int     i,j,wk0,wk1,wk2,wk3
  7. char     ST1,BT1,ston,bton,stot,sttmf,sths
  8. dim int  mvof(23)={0,-1, 0, 1,-1,0, 1,-1, 0, 1    /* move table.(8way.)
  9.           ,0, 1, 1, 1, 0,0, 0,-1,-1,-1}
  10. char     kyb
  11. char     cx,cy,cxn,cyn                /* カーソル
  12. int     cx_,cy_                /* cx*32,cy*32
  13. char     nb0=&HFF,nb1=&HFF
  14. dim char mprob(51199),nprob(51199)
  15. dim int  paltbl(799)
  16. dim char tittbl(1599)
  17. dim char nbtbl(99)
  18. dim int  iconp0(450),iconp1(450)
  19.  
  20. str stg_fl[21]
  21. dim char PAL(31),PCG1(17663)
  22. dim char wk9(127)
  23. dim int  gpal(15)={50788,44512,40284,36056,31828,27600,31710,25368,1984,65534}
  24. /*-*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*-
  25. if b_argc <= 1 then {
  26.     print "問題ファイルを指定してください。"
  27.     print "使用法:XB prb_swap filename"
  28.     stop
  29. } else {
  30.     wk0=strrchr(b_argv(1),&H2E)
  31.     if wk0 = -1 then {
  32.         stg_fl=b_argv(1)+".DAT"
  33.         print stg_fl
  34.     } else {
  35.         stg_fl=b_argv(1)
  36.         print stg_fl
  37.     }
  38. }
  39. DATA_READ()                    /* ETC. data read
  40. SCR_INIT()                    /* screen init.
  41. SCR_MK1()                    /* screen make
  42.  
  43. /*---- -: Main Loop :- ----
  44. cx=0 : cx_=0 : cy=0 : cy_=0
  45. TCOS()
  46. kb_cls()
  47. ston=&HFF
  48. sths=&HFF
  49. bton=kstrig(1)
  50. while 1
  51.     ST_INP()
  52.     if kyb = &H1B then break
  53.  
  54. /*++++ -: カーソル イドウ :- ++++
  55.     cxn=cx
  56.     cyn=cy
  57.     if ston = 0 then {
  58.         if ST1 <> 0 then {
  59.         if sths = ST1 then {
  60.             cx=cx+mvof(ST1)
  61.             cy=cy+mvof(ST1+10)
  62.             if cx = &HFF then cx=9
  63.             if cx = 10 then cx=0
  64.             if cy = &HFF then cy=9
  65.             if cy = 10 then cy=0
  66.         }
  67.         }
  68.     }
  69.     if cx <> cxn or cy <> cyn then {
  70.         cx_=cx shl 5
  71.         cy_=cy shl 5
  72.         TCOS()                /* カーソル
  73.     }
  74.  
  75. /*++++ -: ボタン ガ オサレタ :- ++++
  76.     if bton = 0 and BT1 = 1 then {
  77. /*---- -: イレカエ モト ケッテイ :- ----
  78.         if nb0 = &HFF then {
  79.             nb0=cy*10+cx
  80.             MES(472,128,itoa(nb0+1))
  81.  
  82.             wk0=nb0 /10 : wk1=nb0-(wk0*10)
  83.             wk0=wk0 shl 5 : wk1=wk1 shl 5
  84.             box(wk1+24,wk0+24,wk1+55,wk0+55,gpal(8))
  85.         } else {
  86. /*---- -: イレカエ サキ ケッテイ > イレカエ :- ----
  87.             nb1=cy*10+cx
  88.             ICON_SWAP()
  89.             nb0=&HFF
  90.             nb1=&HFF
  91.             fill(472, 96,495,119,gpal(3))
  92.             fill(472,124,495,147,gpal(3))
  93.             MES(472,100,itoa(cy*10+cx+1))
  94.         }
  95.         bton=BT1
  96.     }
  97. /*---- -: イレカエ モト キャンセル :- ----
  98.     if bton = 0 and BT1 = 2 then {
  99.         wk0=nb0 /10 : wk1=nb0-(wk0*10)
  100.         wk0=wk0 shl 5 : wk1=wk1 shl 5
  101.         box(wk1+24,wk0+24,wk1+55,wk0+55,gpal(7))
  102.  
  103.         nb0=&HFF
  104.         nb1=&HFF
  105.         fill(472, 96,495,119,gpal(3))
  106.         fill(472,124,495,147,gpal(3))
  107.         MES(472,100,itoa(cy*10+cx+1))
  108.         bton=BT1
  109.     }
  110.  
  111. /*++++ -: スティック ノ ニュウリョク アトショリ :- ++++
  112.         ST_CK2(16,2)
  113.  
  114. /*++++ -: ボタン ノ ニュウリョク アトショリ :- ++++
  115.         if bton <> BT1 then bton=0
  116.  
  117.         v_disp()
  118. endwhile
  119.  
  120. DATA_SAVE()
  121. tcls()
  122. end
  123.  
  124. /*==== -: カーソル イドウ :- ====
  125. /*====-----------------====
  126. func TCOS()
  127.     int i,n0
  128.     tfill( 24, 24,343,343, 0)
  129.     tline(cx_+24,cy_+24,cx_+24,cy_+55,15)
  130.     tline(cx_+55,cy_+24,cx_+55,cy_+55,15)
  131.     tline(cx_+24,cy_+24,cx_+55,cy_+24,15)
  132.     tline(cx_+24,cy_+55,cx_+55,cy_+55,15)
  133.  
  134. /*---- -: モンダイ タイトル :- ----
  135.     n0=nbtbl(cy*10+cx) shl 4
  136.     for i=0 to 11
  137.         TFP2(360+i*12, 28,tittbl(n0+i))
  138.     next
  139. /*---- -: モンダイ サイズ :- ----
  140.     fill(440, 60,455, 75,gpal(3))
  141.     MES(440, 60,itoa(tittbl(n0+14)))
  142.     fill(480, 60,495, 75,gpal(3))
  143.     MES(480, 60,itoa(tittbl(n0+15)))
  144.  
  145.     if nb0 = &HFF then {
  146.         fill(472, 96,495,119,gpal(3))
  147.         MES(472,100,itoa(cy*10+cx+1))
  148.     } else {
  149.         fill(472,124,495,147,gpal(3))
  150.         MES(472,128,itoa(cy*10+cx+1))
  151.     }
  152. endfunc
  153.  
  154. /*==== -: Icon Sawp :- ====
  155. /*====-----------------====
  156. func ICON_SWAP()
  157.     int x0,y0,x1,y1,nbf
  158.     y0=nb0 / 10 : x0=nb0-(y0*10)
  159.     y1=nb1 / 10 : x1=nb1-(y1*10)
  160.     x0=x0 shl 5 : y0=y0 shl 5
  161.     x1=x1 shl 5 : y1=y1 shl 5
  162.  
  163. /*---- -: アイコン イレカエ :- ----
  164.     get(x0+25,y0+25,x0+54,y0+54,iconp0)
  165.     get(x1+25,y1+25,x1+54,y1+54,iconp1)
  166.     put(x0+25,y0+25,x0+54,y0+54,iconp1)
  167.     put(x1+25,y1+25,x1+54,y1+54,iconp0)
  168.     box(x0+24,y0+24,x0+55,y0+55,gpal(7))
  169.  
  170.     x0=nbtbl(nb0) : x1=nbtbl(nb1)
  171.     nbtbl(nb0)=x1 : nbtbl(nb1)=x0
  172.  
  173. /*---- -: モンダイ タイトル :- ----
  174.     nbf=nbtbl(cy*10+cx) shl 4
  175.     for i=0 to 11
  176.         TFP2(360+i*12, 28,tittbl(nbf+i))
  177.     next
  178. /*---- -: モンダイ サイズ :- ----
  179.     fill(440, 60,455, 75,gpal(3))
  180.     MES(440, 60,itoa(tittbl(nbf+14)))
  181.     fill(480, 60,495, 75,gpal(3))
  182.     MES(480, 60,itoa(tittbl(nbf+15)))
  183. endfunc
  184.  
  185. /*==== -: Screen Make :- ====
  186. /*====-------------------====
  187. func SCR_MK1()
  188.     int i,j,pc0,pc1,x,y
  189.     sp_palet(0,PAL,0)
  190.     sp_out()
  191.     fill(  0,  0,511,511,gpal(1))
  192.     fill(352,  8,503, 47,gpal(3))
  193.     fill(352, 56,503, 79,gpal(3))
  194.     fill(352, 96,503,119,gpal(3))
  195.     fill(352,124,503,147,gpal(3))
  196.     MES(360, 12,"タイトル")
  197.     MES(360, 60,"サイズ X:   Y:  ")
  198.     MES(360,100,"いれかえもと:")
  199.     MES(360,128,"いれかえさき:")
  200.  
  201. /*---- -: palet :- ----
  202.     for i=0 to 99
  203.         nbtbl(i)=i
  204.         for j=0 to 7
  205.             pc0=mprob((i shl 9)+ 18+(j shl 1))
  206.             pc1=mprob((i shl 9)+ 19+(j shl 1))
  207.             paltbl((i shl 3)+j)=(pc0 shl 8)+pc1
  208.         next
  209.     next
  210.  
  211. /*---- -: problem icon :- ----
  212.     for i=0 to 9
  213.         MES(  4, 32+(i shl 5),itoa(i*10))
  214.         MES( 32+(i shl 5),  4,itoa(i+1))
  215.         y=(i shl 5)+24
  216.         for j=0 to 9
  217.             x=(j shl 5)+24
  218.             PICON(i*10+j,x,y)
  219.             box(x,y,x+31,y+31,gpal(7))
  220.         next
  221.     next
  222.  
  223. /*---- -: problem title :- ----
  224.     for i=0 to 99
  225.         for j=0 to 15
  226.             tittbl((i shl 4)+j)=mprob((i shl 9)+  2+j)
  227.         next
  228. /*---- -: problem size :- ----
  229.         tittbl((i shl 4)+14)=mprob((i shl 9)+  0)
  230.         tittbl((i shl 4)+15)=mprob((i shl 9)+  1)
  231.     next
  232. endfunc
  233. func PICON(nb;char,x;int,y;int)
  234.     int i,j,pl,p0,p1
  235.     for i=0 to 29
  236.     for j=0 to 14
  237.         pl=mprob((nb shl 9)+ 62+i*15+j)
  238.         p0=pl shr 5 : p0=paltbl((nb shl 3)+p0)
  239.         p1=(pl and 15) shr 1 : p1=paltbl((nb shl 3)+p1)
  240.         iconp0(i*15+j)=(p0 shl 16)+p1
  241.     next
  242.     next
  243.     put(x+1,y+1,x+30,y+30,iconp0)
  244. endfunc
  245.  
  246. /*[S]= -: key borad buffer clear :- ====
  247. /*====------------------------------====
  248. func kb_cls()
  249.     while 1
  250.         if inkey$(0) = "" then break
  251.     endwhile
  252. endfunc
  253.  
  254. /*[S]= -: Key Board & Stick & Mouse Input Check :- ====
  255. /*====---------------------------------------------====
  256. func ST_INP()
  257.     ST1=k8stick(1)
  258.     BT1=kstrig(1)
  259.     kyb=asc(inkey$(0))
  260. endfunc
  261.  
  262. /*[S]= -: スティック ノ ニュウリョク アトショリ :- ====
  263. /*====----------------------------====
  264. func ST_CK2(fl0;char,fl1;char)
  265.     if sths <> ST1 then {
  266.         ston=0
  267.         stot=0
  268.         sttmf=0
  269.     } else {
  270.         ston=1
  271.     }
  272.     if ston <> 0 and sths = ST1 then {
  273.         stot=stot+1
  274.         if sttmf = 0 then {
  275.             if stot = fl0 then {
  276.                 ston=0
  277.                 stot=0
  278.                 sttmf=1
  279.             }
  280.         } else {
  281.             if stot = fl1 then {
  282.                 ston=0
  283.                 stot=0
  284.             }
  285.         }
  286.     }
  287.     sths=ST1
  288. endfunc
  289.  
  290. /*[S]= -: Text Font Put(8x16) :- ====
  291. /*====---------------------------====
  292. func TFP2(x;int,y;int,cd;int)
  293.     wk0=cd shr 1
  294.     wk1=cd and 1
  295.  
  296.     sp_pcg(&H3F,PCG1,wk0)        /* フォント パターン ヨウイ
  297.     sp_out()
  298.  
  299.     sp_pat(&HFC+(wk1 shl 1),wk9,0)        /* フォント プット
  300.     tput(x,y,8,8,wk9,"pset")
  301.     sp_pat(&HFD+(wk1 shl 1),wk9,0)
  302.     tput(x,y+8,8,8,wk9,"pset")
  303. endfunc
  304. func MES(x;int,y;int,m;str)
  305.     symbol(x,y,m,1,1,1,gpal(7),0)
  306.     symbol(x+1,y,m,1,1,1,gpal(9),0)
  307. endfunc
  308.  
  309. /*[I]= -: Screen Initialize :- ====
  310. /*====-------------------------====
  311. func SCR_INIT()
  312.     screen 1,3,1,1
  313. /*    iocs(&H10,&H3C):iocs(&H90)
  314.     console ,,0
  315.     v_priority("STG","01")            /* プライオリティ (SP>TX>GR)
  316.     v_special(0)                /* ハントウメイ off
  317.     window(  0,  0,511,511)
  318.     home(0,  0,  0)
  319.     vpage(1)
  320.     apage(0)
  321.     tcls()
  322.     thome(  0,  0)
  323.     tfill(  0,  0,511,511, 0)
  324. /*    sp_init()
  325.     sp_disp(0)
  326.     mouse(0)
  327.     mouse(4)
  328. endfunc
  329.  
  330. /*[I]= -: Data Read :- ====
  331. /*====-----------------====
  332. func DATA_READ()
  333.     wk0=fopen("PX      .PAL","r")
  334.     fread(PAL,32,wk0)
  335.     fclose(wk0)
  336.  
  337.     wk0=fopen("PX      .OBJ","r")
  338.     fseek(wk0,19456,0)
  339.     fread(PCG1,17664,wk0)
  340.     fclose(wk0)
  341.  
  342.     wk0=fopen(stg_fl,"r")
  343.     fread(mprob,51200,wk0)
  344.     fclose(wk0)
  345. endfunc
  346.  
  347. /*[I]= -: Data Save :- ====
  348. /*====-----------------====
  349. func DATA_SAVE()
  350.     fill(  0,472,511,511,gpal(3))
  351.     MES(  0,476,"データセーブしますか? (Y/N)")
  352.     while 1
  353.         ST_INP()
  354.         if kyb = 'Y' or kyb = 'y' or kyb = 'N' or kyb = 'n' then break
  355.     endwhile
  356.     if kyb = 'N' or kyb = 'n' then return()
  357.     MES(  0,492,"ただいまデータセーブちゅう! NO.:")
  358.  
  359.     for i=0 to 99
  360.         MES(264,492,itoa(i+1))
  361.         for j=0 to 511
  362.             nprob((i shl 9)+j)=mprob((nbtbl(i) shl 9)+j)
  363.         next
  364.         fill(264,492,287,507,gpal(3))
  365.     next
  366.  
  367.     wk0=fopen(stg_fl,"c")
  368.     fwrite(nprob,51200,wk0)
  369.     fclose(wk0)
  370. endfunc
  371.